Amazon FargateのSOCIを体験するワークショップに参加してきて、SOCIを理解しようとしてきた #AWSreInvent
はじめに
おのやんです。
この度、ラスベガスで開催中のre:Invent2024に参加し、AWS FargateのSeekable OCI(SOCI)の仕組みを理解し体験できるワークショップを受講してきました。ということで、今回はそちらの内容をダイジェストで紹介したいと思います。
セッション概要
Lazy loading container images with Seekable OCI
Seekable OCI (SOCI) is an open source AWS technology that enables containers to launch faster by lazily loading the container image. In this workshop, get hands-on with SOCI. Learn how to create SOCI indexes for existing container images and how index generation can be automated in the cloud. Then, practice deploying workloads to Amazon ECS with AWS Fargate, considering how launch times are reduced by lazily loading container images. You must bring your laptop to participate.
Seekable OCIによるコンテナイメージの遅延ロード
Seekable OCI (SOCI) はオープンソースのAWS技術で、コンテナイメージを遅延ロードすることでコンテナの起動を高速化します。このワークショップでは、SOCIをハンズオンします。既存のコンテナイメージにSOCIインデックスを作成する方法と、クラウド上でインデックス生成を自動化する方法を学びます。その後、AWS Fargateを使ってAmazon ECSにワークロードをデプロイする練習をし、コンテナイメージを遅延ロードすることで起動時間がどのように短縮されるかを考えます。参加にはラップトップが必要です。
会場の様子
今回の会場も、スライドが一番見える最前列のど真ん中に席をとりました。
re:Inventのポータルではレベル400(エキスパートセッション)でしたが、実際のワークショップページではレベル300(上級セッション)と表示されていました。レベル400はサービスに精通しており、かつ外部ソリューションを実装しているレベルを指すらしいですが、今回の内容はすこし低いレベルの方向けとの調整がなされたのでしょうか?ちょっと気になります。
セッション内容
セッション内容をおさらいする上で必須なのが、Seekable OCI(SOCI)の説明でしょう。
FargateがECRなどのコンテナイメージリポジトリからタスクを生成する場合、コンテナイメージリポジトリからコンテナイメージをpullしてきます。しかし、コンテナイメージのpull処理は大きく時間がかかる傾向があります。実際、タスク起動時間の大部分をコンテナイメージのpullに費やしているという傾向もあるそうです。
タスク起動のアプローチを細かく見ていきましょう。コンテナイメージをダウンロードするとき、コンテナの構成要素であるレイヤーはそれぞれ個別に圧縮されています。これをそれぞれ個別に解凍していき、タスク起動に進むという流れになっています。
これに時間がかかると言うことで、SOCIではSOCIインデックスという仕組みを導入します。SOCI インデックスは、コンテナイメージレイヤー内のファイルと、ファイルがそのレイヤーのどこにあるかが記録されたメタデータファイルです。SOCIインデックスはコンテナイメージとともにコンテナレジストリにpushできるため、クライアント(この場合は SOCIスナップショット作成者)が簡単に検出できます。これをもとに、レイヤーの完全ダウンロードを行わずに遅延読み込みを行います。アプリケーションがこれらのファイルにアクセスする時は、SOICインデックスをもとにオンデマンドで読み込むため、通常のコンテナ起動よりも高速化できるという仕組みです。
実際のワークショップでは、ECRのコマンドを実行して通常のコンテナイメージにSOCIインデックスを作成して、その高速性を体験したりしました。
ワークショップを受けてみて
SOCIインデックス、正直難しいです。
さすがレベル300~400のワークショップなだけあり、コンテナそのものの仕組みを理解した上で、この仕組みを一部改良したもの(SOCIインデックス)に取り組んだ形になります。完全に理解したわけではないので、re:Inventが落ち着いた段階でSOCIインデックスなどの項目を見直そうを見直したいと思います。では!